层次分划—双向指示种分析(TWINSPAN)及其在R中的计算
双向指示种分析(Two Way INdicator SPecies Analysis,TWINSPAN)是最流行的层次分划方法之一,广泛用于植被群落研究中(Hill, 1979)。
TWINSPAN概述
TWINSPAN基于由对应分析(CA)或去趋势对应分析(DCA)所得的坐标轴,通过逐级细化实现对整个数据集的层次划分,构造一个有序的双向表对对象(样方)和变量(物种)进行分类。Hill(1979)也称该方法为二分排序分析(dichotomized ordination analysis)。
TWINSPAN算法简述
该算法本身非常复杂,可以概括为以下步骤(Kent and Coker, 1992)。
(1)以排序轴为基础进行预分类。首先对样方-物种组成矩阵执行CA或DCA,并根据第一排序主轴中的得分值(坐标)将对象分为两组(并不一定从0点进行划分),称为初级分类(primary ordination)。
(2)选取指示种。指示种(indicator species)代表了对分类有重要意义的物种,这种重要性通过指示值(indicator value)衡量:
n+和n-分别为划分点两侧(正方向和负方向,即两组)的样方数量,nj+和nj-分别为两组样方中含有物种j的样方数量,Ij为指示值,可知Ij取值范围[-1,1]。
指示值实际上描述了划分点两侧分组对物种的偏好。通常选择Ij绝对值最大的一些代表性物种作为指示种,它们也通常为分布于排序轴两端的种。
(3)计算样方的指示得分(indicator score)。在(2)中,将物种的丰度值转化为指示值,对于一个样方,如果含某正指示种(Ij>0),计+1分;含某负指示种(Ij<0),计-1分;该样方中所有指示种的得分相加后,即为该样方的指示得分。
(4)重新根据指示得分对样方分类。选择合理的指示得分阈值作为划分点,使两侧的分组与(1)中分组的吻合程度最高,降低分类错误。若二者完全吻合,则继续(5);若不完全一致,则需要对预分组进行调整。
以最初排序轴上的划分点为中心向两侧扩展得到一个较窄的中性带(indifference zone),对邻近划分点样方的模糊分类进行调整,如下所示(Hill et al, 1975),调整后①、②、③区归为一组,④、⑤、⑥区归为一组。
(5)重复(1)-(4)过程,在得到的每个分类中进一步细分分类,最终得到整个数据集的层次分类结构。
存在两种停止划分的终止原则:组内样方数降到一个规定数值(如包含5个或更少样方的组不进行进一步划分),或者达到规定的划分层级(如只允许划分3级)。
(6)通过类似的过程也可实现对物种的分类。
聚类结果解读
TWINSPAN的主要输出是一个重新构建的样方×物种的双向表,称为双向分类矩阵(two-way classification matrix),同时提供了样方或物种的分类信息,这是TWINSPAN 的一个特点。
如果有必要,可以通过双向表绘制树状图观测分类概况,它的结构很容易理解。
97个样方30个物种的TWINSPAN聚类。
下方的矩阵为样方×物种的双向分类矩阵,纵列为样方,横列为物种,交叉区域的数值代表了该物种在该样方中的数量,“-”表示该物种不存在于此样方中。矩阵右侧和下侧的0和1分别代表每次划分分类时的两个组,例如“10”代表了第一次划分到了1组,在1组中继续划分,第二次划分到了0组。
上方的树状图即为聚类树,这里表示了样方在层次分划时的分类信息,和双向分类矩阵中代表分类的“0-1”信息对应。
注:对于TWINSPAN的聚类树,分支方向不可随意调整,对象的排列顺序和其分类特征密切相关(与CA或DCA轴得分关联),这点和层次聚合分类的聚类树存在区别。
TWINSPAN的改进
根据上述计算原理可知,指示种的概念只考虑了该样方中物种存在与否的情况。
为了加入物种丰度的定量信息,可将丰度较高的物种转换为一系列假物种(pseudospecies)带入运算,即原始数据中某物种丰度越高,预处理数据中其对应的假物种越多,转换使用预先定义的割层(cut-levels)完成。TWINSPAN的结果是一个层次结构的树状图,它显示了各个细分区域之间的关系,每个细分区域都有一个或多个指示物种的列表,根据层次分类的划分对样方进行排序后,物种将在组内成块分布。
最初的TWINSPAN在划分层次时,对于每个亚组是同步进行的,因此最终所得聚类簇数量只能是2n,n为划分的层级。
Roleček等(2009)加以改进,划分层次时仅对组成上异质性最高(高β多样性)的亚组进一步细化,修改后的TWINSPAN允许获得任意的聚类簇数量。
原始(a)和改进(b)TWINSPAN算法的树状图。在原始TWINSPAN中,各层级的每个组都被进一步分为更细的两组;改进的TWINSPAN中,只对异质性最高的组进一步划分。
TWINSPAN的缺点
Belbin和McDonald(1993)指出TWINSPAN的两个缺点:
(1)该方法基于单峰响应模式的CA或DCA,因此假设数据结构存在一个强梯度支配,可能无法识别数据集中的次级梯度或其它类型的结构;
(2)排序主轴上的划分点是任意的(无固定的准则),在梯度不明显时,可能会导致物种组成非常接近的样方彼此分离。
统计学家经常批评TWINSPAN是一个随意的、没有完整记录的步骤。尽管如此,在群落生态学研究中该方法却受青睐,因为它经常返回生态学上直观的结果,特别是在植被群落的研究中,使用TWINSPAN有着悠久的传统。
R语言执行TWINSPAN
在R中,可使用twinspanR包执行TWINSPAN。
以下代码直接搬运自原作者的文档:
https://davidzeleny.net/blog/2015/05/10/twinspan-in-r/
#install twinspanR packages#https://github.com/zdealveindy/twinspanR/blob/master/README.md
install.packages('devtools') # if you don't have it installed yet
devtools::install_github('nsj3/riojaExtra')
devtools::install_github('zdealveindy/twinspanR')
# Modified TWINSPAN on traditional Ellenberg's Danube meadow dataset,
# projected on DCA and compared with original classification into
# three vegetation types made by tabular sorting:
library(twinspanR)
library(vegan)
data(danube)
res <- twinspan(danube$spe, modif = TRUE, clusters = 4)
k <- cut(res)
dca <- decorana(danube$spe)
par(mfrow = c(1,2))
ordiplot(dca, type = 'n', display = 'si', main = 'Modified TWINSPAN')
points(dca, col = k)
for (i in c(1,2,4)) ordihull(dca, groups = k, show.group = i, col = i, draw = 'polygon', label = TRUE)
ordiplot(dca, type = 'n', display = 'si', main = 'Original assignment\n (Ellenberg 1954)')
points(dca, col = danube$env$veg.type)
for (i in c(1:3)) ordihull(dca, groups = danube$env$veg.type,
show.group = unique (danube$env$veg.type)[i], col = i,
draw = 'polygon', label = TRUE)
然而本人上来就卡在了安装环节上……
因为还有很多其它事情要做,加上本人实际中似乎也用不到该方法,就没再花时间研究该包,具体用法还请自行研究吧……
参考资料
对应分析(CA)和去趋势对应分析(DCA)在群落分析中的应用